package com.ttg.model.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import lombok.Data;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;


@Data
@Accessors(chain = true)
@TableName(value = "tbl_agent")
public class Agent {

	private static final long serialVersionUID = 1L;

   /** 
    * 代理商编号
    */
	@TableId(value = "agent_no", type = IdType.AUTO)
	private Long agentNo;

   /** 
    * 运营平台编号 
    */
	@TableField(value = "agent_org_no")
	private Long agentOrgNo;

   /** 
    * 代理商名称 
    */
	@TableField(value = "agent_name")
	private String agentName;

   /** 
    * 状态(0未审核，1已审核，2审核未通过，3待审核，4已删除，7已过期) 
    */
	@TableField(value = "agent_status")
	private Integer agentStatus;

   /** 
    * 添加时间 
    */
	@TableField(value = "agent_add_time")
	@JsonDeserialize(using = LocalDateTimeDeserializer.class)
	@JsonSerialize(using = LocalDateTimeSerializer.class)
	private LocalDateTime agentAddTime;

   /** 
    * 更新时间 
    */
	@TableField(value = "agent_upd_time")
	@JsonDeserialize(using = LocalDateTimeDeserializer.class)
	@JsonSerialize(using = LocalDateTimeSerializer.class)
	private LocalDateTime agentUpdTime;

   /** 
    * 签约佣金 
    */
	@TableField(value = "agent_fee")
	private BigDecimal agentFee;

   /** 
    * 合同编号 
    */
	@TableField(value = "agent_code")
	private String agentCode;

   /** 
    * 合同签署日期 
    */
	@TableField(value = "agent_sign_date")
	@JsonDeserialize(using = LocalDateDeserializer.class)
	@JsonSerialize(using = LocalDateSerializer.class)
	private LocalDate agentSignDate;

   /** 
    * 生效时间 
    */
	@TableField(value = "agent_sdate")
	@JsonDeserialize(using = LocalDateDeserializer.class)
	@JsonSerialize(using = LocalDateSerializer.class)
	private LocalDate agentSdate;

   /** 
    * 过期时间 
    */
	@TableField(value = "agent_edate")
	@JsonDeserialize(using = LocalDateDeserializer.class)
	@JsonSerialize(using = LocalDateSerializer.class)
	private LocalDate agentEdate;

   /** 
    * 签约人 
    */
	@TableField(value = "agent_sign_man")
	private String agentSignMan;

   /** 
    * 是否自动续签（1自动续签，0不续签） 
    */
	@TableField(value = "agent_auto_sign")
	private Integer agentAutoSign;

   /** 
    * 代理合同照片 
    */
	@TableField(value = "agent_pic1")
	private String agentPic1;

   /** 
    * 代理合同照片（附加） 
    */
	@TableField(value = "agent_pic2")
	private String agentPic2;

   /** 
    * 代理层级 
    */
	@TableField(value = "agent_level")
	private Integer agentLevel;

   /** 
    * 父级代理商编号 
    */
	@TableField(value = "agent_parent_no")
	private Long agentParentNo;

   /** 
    * 一级代理商编号 
    */
	@TableField(value = "agent_no1")
	private Long agentNo1;

   /** 
    * 二级代理商编号 
    */
	@TableField(value = "agent_no2")
	private Long agentNo2;

   /** 
    * 三级代理编号 
    */
	@TableField(value = "agent_no3")
	private Long agentNo3;

   /** 
    * 四级代理编号 
    */
	@TableField(value = "agent_no4")
	private Long agentNo4;

   /** 
    * 五级代理商编号 
    */
	@TableField(value = "agent_no5")
	private Long agentNo5;

   /** 
    * 公司名称 
    */
	@TableField(value = "agent_mct_name")
	private String agentMctName;

   /** 
    * 所在地区 
    */
	@TableField(value = "agent_cityid")
	private String agentCityid;

   /** 
    * 联系人 
    */
	@TableField(value = "agent_contact")
	private String agentContact;

   /** 
    * 联系电话 
    */
	@TableField(value = "agent_contact_tel")
	private String agentContactTel;

   /** 
    * 开户行 
    */
	@TableField(value = "agent_bank_name")
	private String agentBankName;

   /** 
    * 账户名 
    */
	@TableField(value = "agent_acct_name")
	private String agentAcctName;

   /** 
    * 账号 
    */
	@TableField(value = "agent_card_no")
	private String agentCardNo;

   /** 
    * 营业执照图片 
    */
	@TableField(value = "agent_bl_pic")
	private String agentBlPic;

   /** 
    * 老板身份证图片 
    */
	@TableField(value = "agent_boss_id_pic")
	private String agentBossIdPic;

   /** 
    * 外部机构编号 
    */
	@TableField(value = "agent_tra_id")
	private String agentTraId;

   /** 
    * 清算联行号 
    */
	@TableField(value = "agent_bank_no")
	private String agentBankNo;

   /** 
    * 结算账户类型（1对公，2对私） 
    */
	@TableField(value = "agent_acct_type")
	private Integer agentAcctType;

   /** 
    * T1商户清算标识（0银行直清，1机构直清） 
    */
	@TableField(value = "agent_out_type")
	private Integer agentOutType;

   /** 
    * D0商户清算标识（0银行直清，1机构直清） 
    */
	@TableField(value = "agent_day_out_type")
	private Integer agentDayOutType;

   /** 
    * 机构类型（1银行分支行，2代理机构） 
    */
	@TableField(value = "agent_type")
	private Integer agentType;


	/**
	 * 银行机构编码
	 */
	@TableField(value = "org_code")
	private String orgCode;

	/**
	 * 父机构代码（顶层机构，父机构代码为空）
	 */
	@TableField(value = "parent_org_code")
	private String parentOrgCode;

	@TableField(value ="out_agent_no")
	private Long outAgentNo;

}